package org.autumn.sharding;


public class SubDatabaseAndSubTable {
    /**
     * 分库分表
     *
     * 分库分表可以解决单机和单库的性能瓶颈,同时会还来一些问题
     *
     * 1. 分布式事务问题
     *  由于分库分表把数据分布在不同的数据库和服务器,不可避免会带来分布式事务问题
     * 2. 跨节点关联查询
     *  查询的数据不存在一个数据库中
     *
     * 垂直分表
     *  将一个表按照字段分成多表,每个表中存储一部分字段
     *
     *  避免IO争抢并减少锁表的几率,查看详情和用户浏览信息互不影响
     *  充分发挥热门的操作效率
     *      1.由于商品描述一般都是数据量大 导致读取时间更长
     *      2.跨页的问题
     *      3.关于mysql加载数据到内存的数据大小
     *
     * 垂直分库
     *  通过垂直分表得到了一定的性能提升,但是还不够,因为数据始终还是在一台物理机上
     * 垂直分表只是解决了单一表数据量过大的问题,没有将表分布到不同的服务器,因此每个
     * 表竞争的还是同一个物理机 网卡 cpu 网络
     *
     *  1.垂直分库按照业务将表进行分类,分布到不同的服务器上
     *  2.解决业务层面的耦合
     *  3.能对不同的数据进行管理维护扩展等
     *
     * 水平分库
     *  就是把同一个表的数据按照一定的规则拆分到不同数据库中,每个库可以放在不同的服务器
     *  假如我们有一个商品表数据量达到了1000万
     *      我们可以将商品id为单数的存入数据库1,为双数存入数据库2
     *      这样我们一个库的数据就到达500万,效率就会提升
     *
     * 水平分表
     * 和水平分库是一个道理,只是我们在同一个数据库中进行对表的水平拆分
     *      也就是说我们有个商品表1  和商品表2 他们的表结构是相同的
     *
     *      将商品id为单数的存入商品表1
     *      将商品id为双数的存入商品表2
     *
     *
     */
}
